﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using projecto_asp.Models;
using System.Diagnostics;

namespace projecto_asp.Models
{
    public class loginModel
    {
        public string hash_utilizador { get; set; }
        public string hash_senha { get; set; }

        public int cod_utilizador { get; set; }
        public string nome_utilizador { get; set; }

        public string ano_letivo { get; set; }

        public string verificaUtilizador()
        {

            calendarModel cal = new calendarModel();

            ano_letivo = cal.getAnoLetivoAtual();
            
            string tipo = "";
            
            string utilizador = hash_utilizador;
            string password = hash_senha;

            bd1Entities bd = new bd1Entities();

            var cod_utilizador_linq = from info in bd.utilizadors
                                      where (info.utilizador1 == utilizador && info.senha == password)
                                      select info.id_utilizador;


            int numero_users = cod_utilizador_linq.ToList().Count();

            if (numero_users > 0 && numero_users < 2)
            {
                int cod_dados = cod_utilizador_linq.ToList()[0];

                var cod_aluno_linq = from aluno in bd.alunoes
                                     where aluno.id_utilizador == cod_dados
                                     select aluno.id_aluno;

                int numero_alunos = cod_aluno_linq.ToList().Count();

                if (numero_alunos > 0 && numero_alunos < 2)
                {
                    cod_utilizador = cod_aluno_linq.ToList()[0];
                    tipo = "aluno";
                }
                else
                {
                    cod_utilizador = 0;

                    var cod_docente_linq = from professor in bd.docentes
                                           where professor.id_utilizador == cod_dados
                                           select professor.id_docente;

                    int numero_docentes = cod_docente_linq.ToList().Count();

                    if (numero_docentes > 0 && numero_docentes < 2)
                    {

                        tipo = "professor";

                        cod_utilizador = cod_docente_linq.ToList()[0];

                        var lista_coordenadores_linq = (from coordenador in bd.coordenadorAnoes
                                                        where coordenador.id_docente == cod_utilizador
                                                        select coordenador.ano_letivo).Distinct();

                        foreach (var ano in lista_coordenadores_linq)
                        {
                            if (ano == ano_letivo)
                            {
                                tipo = "coordenador";
                            }
                        }
                    }
                    else
                    {
                        cod_utilizador = 0;
                        tipo = "";
                    }
                }
            }

            var nomes = from dado in bd.utilizadors
                        where dado.id_utilizador == cod_utilizador
                        select dado.nome;

            foreach (var nome in nomes)
            {
                nome_utilizador = nome;
            }

            return tipo;

        }
    }
}